/**
 * Created by sky on 2019/3/12.
 */
layui.define(['CommonFunction'], function (exports) {
    var CommonFunction = layui.CommonFunction;
    var justchatProto = CommonFunction.heredoc(function () {/*
     syntax = "proto3";
     package msg;

     //消息后缀为ST，表示一种状态；为EV表示用户触发的某种事件；为NT表示服务端生成的通知
     //消息后缀为Req，表示客户端向服务端发送的请求
     //----------------------------公用结构-------------------
     //错误码
     enum STATUS {
         OK = 0;
         UNKNOWN_ERROR = 1; // 未知错误
         NOT_AUTH = 2; // 需要重新认证
         TOKEN_INVALID = 3; // token错误
         INSUFFICIENT = 4; // 余额不足
         REDIRECT = 5; // 需要用户重连到另外的服务器
         IDLE_TIMEOUT = 6; //闲置时间过长
         DUP_LOGIN = 7; //Deprecated: 在别处登录，现在统一使用3
         PARAM_ERROR = 8; //参数错误
         SERVER_CLOSED = 9;//服务器已经关闭
     }

     // 对时，服务端存活探测, id=0
     message Ping {
        int64 Timestamp = 1;
     }

     //对时，服务端返回当前时间，id=99
     message Pong {
        int64 Timestamp = 1;
     }

     //错误信息，id: 100
     message ErrorST {
        int64 Timestamp = 1; //毫秒级时间戳，下同
        STATUS Status = 2;
        string Msg = 3;
     }

     // 登录授权  id: 1
     message AuthReq {
        string Token = 3; // 授权token
     }

     // id: 2
     message AuthResp {
         uint64 UserID = 1; // IM平台用户唯一id
         string Nickname = 2; // 昵称
         string PortraitUri = 3; // 肖像
         int64 Timestamp = 4; // 服务器时间，客户端可用来做对时
     }

     // id: 3
     message InTopicReq {
         Topic Topic = 1;
     }

     enum PRESENCE_TYPE {
         ONLINE = 0; // 在线
         OFFLINE = 1; // 下线
         BUSY = 2; // 休息离开
         DISABLE = 3; // 禁用
     }

     // 在线状态变更通知 id: 4
     message PresenceNT {
         uint64 ID = 1; // 用户id
         PRESENCE_TYPE Type = 2;
     }

     enum TOPIC_TYPE {
         PRIVATE = 0; //私聊
         GROUP = 1; //群聊
     }

     // 会话定义
     message Topic {
         TOPIC_TYPE TopicType = 1;
         uint64 ID = 2; // 用户或群组id
     }

     // 消息类型
     enum MSG_TYPE {
         TEXT = 0; //纯文本
         IMAGE = 1; //图片
         AUDIO = 2; //音频
         NOTICE = 3; // 系统通知
         CUSTOM = 10; // 自定义协议
     }

     // 发送消息 id: 5
     message ChatReq {
         string ClientID = 1; // 消息id, 客户端生成, 重复发送保持一致
         MSG_TYPE MsgType = 2;
         Topic Topic = 3; // 目标会话
         string Info = 4; // 消息主体
     }

     // 发送成功通知 id: 6
     message ChatReqAck {
         string ClientID = 1;
         uint64 MsgID = 2; // 服务端生成唯一消息id
         int64 Timestamp = 3; // 消息到达服务端并存储成功时间
         Topic Topic = 4; // 目标会话
     }

     // 新消息推送 id: 7
     message ChatNT {
         Topic Topic = 1; // 会话
         int32 MsgCount = 2; // 消息数量
         repeated Msg Msgs = 3; // 消息列表
     }

     // 新消息推送成功回应 id: 8
     message ChatNTAck {
         Topic Topic = 1; // 会话
         uint64 MaxMsgID = 2; // 客户端已接收的最大消息id
     }

     // 消息结构定义
     message Msg {
         int64 Timestamp = 1; // 服务端接收成功时间
         uint64 MsgID = 2; // 服务端生成唯一消息id
         MSG_TYPE MsgType = 3; // 消息类型
         uint64 Source = 4; // 发送用户id
         string Info = 5; // 消息主体
         string ClientID = 6; // 客户端id
     }
     */});
    exports('justchatProto', justchatProto);
});